package models

import (
	"gorm.io/gorm"
	"server/basic/config"
	"time"
)

type Order struct {
	Id          uint           `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	OrderSn     string         `gorm:"column:order_sn;type:varchar(255);comment:订单编号;not null;" json:"order_sn"`                        // 订单编号
	GoodsId     uint           `gorm:"column:goods_id;type:bigint;comment:商品id;not null;" json:"goods_id"`                              // 商品id
	GoodsPrice  uint           `gorm:"column:goods_price;type:int UNSIGNED;comment:商品价格;not null;default:0;" json:"goods_price"`        // 商品价格
	GoodsNum    uint           `gorm:"column:goods_num;type:int UNSIGNED;comment:商品数量;not null;default:0;" json:"goods_num"`            // 商品数量
	GoodsMoney  uint           `gorm:"column:goods_money;type:int UNSIGNED;comment:商品总价;not null;default:0;" json:"goods_money"`        // 商品总价
	OrderStatus uint           `gorm:"column:order_status;type:int;comment:订单状态：1：待支付 2：已支付 3：已取消 4：已完成;not null;" json:"order_status"` // 订单状态：1：待支付 2：已支付 3：已取消 4：已完成
	CreatedAt   time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt   time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt   gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (o *Order) TableName() string {
	return "order"
}
func (o *Order) CreateOrder() error {
	return config.DB.Create(&o).Error
}
func (o *Order) UpdateOrder() error {
	return config.DB.Where("id = ?", o.Id).Updates(&o).Error
}
